package com.edu.chat.web.config;

import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
import com.edu.buservice.util.model.TenantUtil;
import com.edu.chat.web.common.enums.ResultCodeEnum;
import com.edu.chat.web.common.model.BizException;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.StringValue;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;

/**
 * @program: KQAIA
 * @description:
 * @author: 无恙
 * @create: 2025-03-17 16:44
 **/
@Component
public class CustomTenantHandler implements TenantLineHandler {

	@Override
	public Expression getTenantId() {
		// 假设有一个租户上下文，能够从中获取当前用户的租户
		String tenantId = TenantUtil.getTenantId();
		if (StringUtils.isBlank(tenantId)) {
			throw new BizException(ResultCodeEnum.TENANT_NOT_EXIST);
		}
		// 返回租户ID的表达式，LongValue 是 JSQLParser 中表示 bigint 类型的 class
		return new StringValue(tenantId);
	}

	@Override
	public String getTenantIdColumn() {
		return "tenant_id";
	}

	@Override
	public boolean ignoreTable(String tableName) {
		// 根据需要返回是否忽略该表
		return false;
	}

}